#include <stdio.h>
#include <libintl.h> 
#include <locale.h> 

#if 0

/* 设置国际化翻译包所在的位置。 */
char * bindtextdomain (const char * domainname, const char * dirname); 
char * bind_textdomain_codeset (const char * domainname, 
                                                 const char * codeset); 

是通过给定的 domainname 查找路径。

dirname 即为参数 dirname，若参数 dirname 为 NULL，则函数返回程序当前路径值 (默认是 /usr/share/locale)，
若 dirname 值为 ""，则返回值为空。

locale 即为 locale 名字，category 是 locale 的分类，如 LC_MESSAGES 等。

domainname 即为参数 domainname。

函数 bind_textdomain_codeset 的功能与 bindtextdomain 相近，
因此 glibc 在实现时采用了一个内部函数 set_binding_values 并通过对该函数输入参数的控制分别实现以上 2 个函数。


/* 重设当前的 domain 值以供 gettext () 等函数使用 */
char * textdomain (const char * domainname); 

domainname 为期望设置的新的 domain 值。
如果参数 domainname 为 ""，那么函数将返回默认值"messages"，但是似乎没人愿意使用该值，因为那样会使程序间出现冲突以至混乱。
若 domainname 值为 NULL，则返回程序当前的 domain 值 ( 在先前没有设置的情况下，仍会返回预定值"messages")。

另外需注意的是，dcgettext () 等自带有参数 domainname 的函数，将不受函数 textdomain 的影响

#endif

#define PACKAGE "psmisc"
#define LOCALEDIR "/usr/share/locale"
#define N_(msgid) gettext(msgid) 

int main (int argc, char *argv[]) 
{ 
	setlocale (LC_CTYPE, "zh_CN.UTF-8"); 
	setlocale (LC_MESSAGES, "zh_CN.UTF-8"); 

	printf("%s\n", bindtextdomain (PACKAGE, LOCALEDIR));	// /usr/share/locale
	printf("%s\n", textdomain (PACKAGE));					// psmisc

	/* Translators: 这里仅是一个注释 */ 
	printf (N_("Are you ok?\n")); 

	return 0; 
} 
